; Music of GI Hero (1988) (Firebird) (Dave Rogers)
; Ripped by Megachur the 16/02/2008

	write "GIHERO.BIN"

music_date_rip	equ &1028
music_adr	equ &b676
first_theme	equ 0
last_theme	equ 0	; 0 -> 0

	read "music_header_v1_0.asm"

	jp lb71f	; play music
	jp lb6d4	; stop music
	jp lb71f
	db #00
;
.init_music
;
	ld a,#01
	ld e,26		; modified by Megachur #01	; init music 1->25 sound fx - 26 main theme
.lb684
	ld c,a
	call lb6fb
	ld a,(hl)
	cp #09
	jr nc,lb690
	ld c,a
	inc hl
	ld a,(hl)
.lb690
	cp #f4
	ld b,#0a
	jr nz,lb699
	inc hl
	ld b,(hl)
	inc hl
.lb699
	ld ix,lb948
	dec c
	jr z,lb6ab
	ld ix,lb96b
	dec c
	jr z,lb6ab
	ld ix,lb98e
.lb6ab
	ld a,b
	cp (ix+#10)
	ret c
	xor a
	ld (ix+#10),a
	ld (ix+#12),l
	ld (ix+#13),h
	ld (ix+#14),l
	ld (ix+#15),h
	ld (ix+#16),l
	ld (ix+#17),h
	ld (ix+#11),#01
	ld (ix+#18),a
	ld (ix+#20),a
	ld (ix+#10),b
	ret
;
.stop_music
.lb6d4
;
	ld hl,#ffff
	ld (lb958),hl
	ld (lb97b),hl
	ld (lb99e),hl
	ld a,#3f
	ld (lb931),a
	xor a
	ld (lb932),a
	ld (lb933),a
	ld (lb934),a
	ld (lb958),a
	ld (lb97b),a
	ld (lb99e),a
	jp lb749
.lb6fb
	ld a,e
	add a
	add #e1
	ld l,a
	adc #ba
	sub l
	ld h,a
	ld e,(hl)
	inc hl
	ld d,(hl)
	ld hl,lb9bd
	add hl,de
	ret
.lb70c
	ld a,e
	add a
	add #85
	ld e,a
	adc #ba
	sub e
	ld d,a
	ld a,(de)
	add #bd
	ld c,a
	inc de
	ld a,(de)
	adc #b9
	ld b,a
	ret
;
.play_music
.lb71f
;
	ld ix,lb948
	ld hl,(lb92a)
	call lb76b
	ld (lb92a),hl
	ld hl,(lb92c)
	ld ix,lb96b
	call lb76b
	ld (lb92c),hl
	ld hl,(lb92e)
	ld ix,lb98e
	call lb76b
	ld (lb92e),hl
	call lb8e6
.lb749
	xor a
	ld hl,lb937
	ld de,#f40d
.lb750
	ld b,d
	out (c),e
	ld bc,#f6c0
	out (c),c
	out (c),a
	ld b,d
	ld c,(hl)
	dec hl
	out (c),c
	ld bc,#f680
	out (c),c
	out (c),a
	dec e
	jp p,lb750
	ret
.lb76b
	ld (lb938),hl
	ld a,(ix+#10)
	or a
	ret z
	dec (ix+#11)
	jp nz,lb895
	ld a,#14
	ld (lb785),a
	ld h,(ix+#13)
	ld l,(ix+#12)
.lb785 equ $ + 1
.lb784
	ld a,#00
	dec a
	ld (lb785),a
	ret z
	ld a,(hl)
	inc hl
	ld e,(hl)
	inc hl
	or a
	jp z,lb840
	cp #09
	jr c,lb7d2
	cp #65
	jp c,lb83d
	cp #7f
	jr c,lb7dd
	cp #df
	jp c,lb837
	cp #fe
	jr z,lb7c2
	cp #ff
	jr z,lb81e
	sub #e6
	jr z,lb7f0
	dec a
	jr z,lb7fc
	dec a
	jr z,lb808
	dec a
	jr z,lb812
	dec a
	jr z,lb7ea
	dec a
	jr z,lb831
	jr lb784
.lb7c2
	ld (ix+#10),#00
	ld h,(ix+#1d)
	ld l,(ix+#1c)
	ld (hl),#00
	ld hl,#0000
	ret
.lb7d2
	push hl
	push ix
	call lb684
	pop ix
	pop hl
	jr lb784
.lb7dd
	sub #66
	ld (lb930),a
	ld (ix+#19),#01
	dec hl
	jp lb784
.lb7ea
	ld (ix+#18),e
	jp lb784
.lb7f0
	call lb70c
	ld (ix+#0e),c
	ld (ix+#0f),b
	jp lb784
.lb7fc
	call lb70c
	ld (ix+#0c),c
	ld (ix+#0d),b
	jp lb784
.lb808
	call lb70c
	ld (lb946),bc
	jp lb784
.lb812
	ld (ix+#15),h
	ld (ix+#14),l
	call lb6fb
	jp lb784
.lb81e
	ld h,(ix+#15)
	ld l,(ix+#14)
	ld a,(hl)
	inc a
	jr nz,lb82e
	ld h,(ix+#17)
	ld l,(ix+#16)
.lb82e
	jp lb784
.lb831
	ld (ix+#20),e
	jp lb784
.lb837
	and #7f
	dec hl
	ld e,(ix+#1f)
.lb83d
	add (ix+#18)
.lb840
	ld (ix+#11),e
	ld (ix+#21),a
	ld (ix+#1f),e
	ld (ix+#13),h
	ld (ix+#12),l
	call lb8d3
	ld h,(ix+#1d)
	ld l,(ix+#1c)
	ld (hl),#00
	push ix
	pop de
	ld hl,#0008
	add hl,de
	ldi
	ldi
	ldi
	ldi
	ldi
	ldi
	ldi
	ldi
	dec (ix+#19)
	ld (ix+#19),#00
	ld l,(ix+#1a)
	jr nz,lb889
	ld hl,(lb946)
	ld (lb93e),hl
	ld hl,#0000
	ld (lb93a),hl
.lb889
	ld a,(lb931)
	and (ix+#1b)
	or l
	and #3f
	ld (lb931),a
.lb895
	call lb8fe
	ld h,(ix+#1d)
	ld l,(ix+#1c)
	ld a,(hl)
	add c
	sub #80
	ld (hl),a
	ld hl,(lb938)
	ld a,h
	or l
	ret z
	ld a,(ix+#20)
	or a
	jr nz,lb8c4
	inc ix
	inc ix
	call lb8fe
	ld hl,(lb938)
	ld b,#00
	add hl,bc
	ld c,#80
	sbc hl,bc
	ld (lb938),hl
	ret
.lb8c4
	dec (ix+#22)
	ld a,(ix+#21)
	jr z,lb8d3
	add (ix+#20)
	ld (ix+#22),#01
.lb8d3
	add a
	add #bd
	ld l,a
	adc #b9
	sub l
	ld h,a
	ld de,lb938
	ldi
	ldi
	ld hl,(lb938)
	ret
.lb8e6
	ld ix,lb93a
	call lb8fe
	ld hl,lb930
	ld a,(hl)
	add c
	sub #80
	ld (hl),a
	cp #11
	ret c
	inc hl
	ld a,(hl)
	or #38
	ld (hl),a
	ret
.lb8fe
	push ix
	pop hl
	ld d,(ix+#05)
	ld e,(ix+#04)
	inc (hl)
	ld a,(de)
	sub (hl)
	ld c,#80
	ret nz
	ld (hl),a
	inc de
	ld a,(de)
	ld c,a
	inc de
	inc hl
	inc (hl)
	ld a,(de)
	sub (hl)
	ret nz
	ld (hl),a
	inc de
	ld a,(de)
	inc a
	jr nz,lb923
	ld d,(ix+#0d)
	ld e,(ix+#0c)
.lb923
	ld (ix+#05),d
	ld (ix+#04),e
	ret
.lb931 equ $ + 7
.lb930 equ $ + 6
.lb92e equ $ + 4
.lb92c equ $ + 2
.lb92a
	db #00,#00,#00,#00,#00,#00,#00,#3f
.lb938 equ $ + 6
.lb937 equ $ + 5
.lb934 equ $ + 2
.lb933 equ $ + 1
.lb932
	db #00,#00,#00,#07,#00,#0e,#00,#00
.lb93e equ $ + 4
.lb93a
	db #00,#00,#0a,#00,#00,#00,#04,#00
.lb948 equ $ + 6
.lb946 equ $ + 4
	db #00,#00,#12,#00,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
.lb958 equ $ + 6
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #08,#36,#32,#b9,#00,#00,#00,#00
.lb96b equ $ + 1
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
.lb97b equ $ + 1
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00,#10,#2d,#33,#b9,#00
.lb98e equ $ + 4
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
.lb99e equ $ + 4
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#20,#1b
	db #34,#b9,#00,#00,#00,#00,#00,#2a
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00
.lb9bd
	db #00,#00,#9f,#17,#4c,#16,#0c,#15
	db #dd,#13,#c0,#12,#b2,#11,#b4,#10
	db #c4,#0f,#e2,#0e,#0c,#0e,#42,#0d
	db #84,#0c,#d0,#0b,#26,#0b,#86,#0a
	db #ef,#09,#60,#09,#d9,#08,#5a,#08
	db #e2,#07,#71,#07,#06,#07,#a1,#06
	db #42,#06,#e8,#05,#93,#05,#43,#05
	db #f7,#04,#b0,#04,#6d,#04,#2d,#04
	db #f1,#03,#b8,#03,#83,#03,#50,#03
	db #21,#03,#f4,#02,#ca,#02,#a1,#02
	db #7c,#02,#58,#02,#36,#02,#17,#02
	db #f9,#01,#dc,#01,#c1,#01,#a8,#01
	db #90,#01,#7a,#01,#65,#01,#51,#01
	db #3e,#01,#2c,#01,#1b,#01,#0b,#01
	db #fc,#00,#ee,#00,#e1,#00,#d4,#00
	db #c8,#00,#bd,#00,#b2,#00,#a8,#00
	db #9f,#00,#96,#00,#8e,#00,#86,#00
	db #7e,#00,#77,#00,#70,#00,#6a,#00
	db #64,#00,#5e,#00,#59,#00,#54,#00
	db #4f,#00,#4b,#00,#47,#00,#43,#00
	db #3f,#00,#3c,#00,#38,#00,#35,#00
	db #32,#00,#2f,#00,#2d,#00,#2a,#00
	db #28,#00,#25,#00,#23,#00,#21,#00
	db #20,#00,#1e,#00,#1c,#00,#1b,#00
	db #19,#00,#18,#00,#16,#00,#00,#00
	db #70,#01,#74,#01,#75,#01,#7f,#01
	db #89,#01,#8d,#01,#91,#01,#95,#01
	db #9c,#01,#a3,#01,#a7,#01,#a8,#01
	db #b5,#01,#bf,#01,#c6,#01,#d3,#01
	db #da,#01,#e1,#01,#f1,#01,#fe,#01
	db #08,#02,#09,#02,#10,#02,#1a,#02
	db #1e,#02,#2b,#02,#38,#02,#3f,#02
	db #40,#02,#47,#02,#4e,#02,#5b,#02
	db #5c,#02,#69,#02,#6a,#02,#7d,#02
	db #8d,#02,#9d,#02,#a7,#02,#a8,#02
	db #a9,#02,#ad,#02,#b1,#02,#bb,#02
	db #bc,#02,#00,#00,#00,#00,#cb,#02
	db #d4,#02,#ec,#02,#f7,#02,#02,#03
	db #10,#03,#1e,#03,#2b,#03,#3b,#03
	db #46,#03,#6b,#03,#75,#03,#7d,#03
	db #8b,#03,#9a,#03,#9b,#03,#a3,#03
	db #a4,#03,#a5,#03,#b4,#03,#bd,#03
	db #be,#03,#dc,#03,#eb,#03,#00,#00
	db #ff,#03,#62,#04,#b9,#04,#0e,#05
	db #21,#05,#7e,#05,#81,#05,#c6,#05
	db #ee,#05,#f1,#05,#0b,#06,#24,#06
	db #c8,#80,#c8,#ff,#ff,#01,#8f,#01
	db #01,#7e,#06,#06,#7f,#03,#ff,#01
	db #8b,#01,#04,#80,#01,#04,#7f,#0b
	db #ff,#01,#7f,#c8,#ff,#01,#96,#c8
	db #ff,#01,#81,#c8,#ff,#01,#86,#01
	db #c8,#80,#c8,#ff,#01,#8d,#01,#01
	db #7f,#0d,#ff,#01,#90,#c8,#ff,#ff
	db #01,#8e,#01,#01,#7e,#04,#01,#7f
	db #01,#c8,#80,#c8,#ff,#01,#d0,#02
	db #01,#6c,#06,#c8,#80,#c8,#ff,#01
	db #8f,#01,#c8,#80,#c8,#ff,#01,#8f
	db #01,#01,#7e,#01,#03,#80,#01,#02
	db #7f,#0f,#ff,#01,#91,#02,#01,#6f
	db #02,#ff,#01,#82,#01,#01,#7e,#01
	db #ff,#01,#8f,#01,#03,#80,#01,#01
	db #7f,#01,#04,#7f,#0c,#c8,#80,#c8
	db #ff,#01,#85,#01,#01,#7e,#01,#01
	db #82,#01,#01,#7b,#01,#ff,#01,#88
	db #01,#09,#78,#01,#c8,#80,#c8,#ff
	db #ff,#01,#8c,#01,#01,#7d,#01,#ff
	db #01,#84,#01,#01,#84,#01,#01,#7c
	db #01,#ff,#01,#85,#05,#ff,#01,#82
	db #03,#01,#7a,#01,#01,#81,#07,#01
	db #7f,#07,#ff,#01,#81,#06,#01,#7f
	db #06,#01,#81,#09,#01,#77,#01,#ff
	db #01,#84,#16,#02,#7f,#c8,#ff,#ff
	db #01,#9b,#03,#c8,#80,#c8,#ff,#01
	db #78,#01,#01,#8e,#01,#ff,#01,#88
	db #01,#06,#81,#03,#06,#7f,#03,#08
	db #78,#01,#ff,#ff,#01,#7f,#0d,#0f
	db #80,#01,#01,#81,#0d,#0f,#80,#01
	db #ff,#ff,#01,#8e,#01,#01,#7f,#01
	db #01,#81,#01,#02,#7f,#02,#11,#7f
	db #0b,#c8,#80,#c8,#ff,#01,#8a,#01
	db #01,#81,#01,#02,#7e,#01,#08,#7f
	db #09,#c8,#80,#c8,#ff,#01,#8a,#01
	db #01,#7f,#03,#01,#82,#01,#0c,#7f
	db #05,#c8,#80,#c8,#ff,#01,#89,#01
	db #01,#7f,#03,#01,#7e,#03,#ff,#ff
	db #ff,#02,#81,#c8,#ff,#01,#a1,#c8
	db #ff,#01,#8e,#01,#01,#7f,#07,#c8
	db #80,#c8,#ff,#ff,#01,#81,#02,#01
	db #7f,#04,#01,#81,#02,#ff,#00,#00
	db #00,#00,#00,#02,#e7,#02,#e8,#04
	db #6e,#00,#0b,#fe,#02,#e7,#03,#e6
	db #00,#e8,#04,#73,#5f,#02,#00,#02
	db #e6,#05,#6c,#5f,#09,#e6,#06,#e7
	db #07,#51,#16,#fe,#02,#e7,#08,#e6
	db #09,#e8,#06,#6b,#59,#09,#fe,#02
	db #e7,#0b,#e6,#0c,#e8,#0d,#66,#3a
	db #0a,#fe,#03,#e7,#0e,#e6,#0f,#e8
	db #10,#73,#0f,#04,#6d,#1b,#20,#fe
	db #03,#e7,#11,#e6,#00,#e8,#12,#6a
	db #18,#09,#6a,#0c,#2d,#fe,#03,#02
	db #08,#e7,#11,#e6,#11,#e8,#12,#66
	db #00,#63,#fe,#02,#00,#02,#e7,#11
	db #e6,#0f,#e8,#11,#66,#41,#04,#66
	db #29,#63,#fe,#03,#e7,#11,#e6,#11
	db #e8,#00,#73,#16,#63,#fe,#01,#e7
	db #13,#e6,#00,#48,#03,#00,#09,#48
	db #03,#00,#03,#c8,#00,#03,#c8,#00
	db #03,#48,#12,#48,#03,#00,#03,#48
	db #12,#48,#0c,#48,#03,#00,#03,#c8
	db #00,#09,#ff,#01,#e7,#13,#e6,#00
	db #48,#03,#00,#03,#fe,#01,#e7,#13
	db #e6,#00,#48,#0c,#fe,#01,#e7,#15
	db #e6,#15,#e8,#00,#6b,#24,#02,#6e
	db #00,#02,#ff,#02,#f4,#05,#e7,#16
	db #e6,#17,#e8,#17,#66,#0c,#04,#e8
	db #00,#fe,#ff,#03,#e7,#1c,#e6,#1d
	db #3b,#1b,#fe,#ff,#ff,#01,#02,#14
	db #00,#04,#03,#14,#e7,#1e,#e6,#00
	db #15,#63,#95,#ff,#f4,#05,#e7,#1e
	db #e6,#20,#15,#50,#ff,#ff,#01,#02
	db #17,#03,#18,#e7,#19,#e6,#1a,#e8
	db #00,#00,#1e,#03,#18,#11,#0f,#02
	db #17,#00,#63,#03,#18,#00,#63,#60
	db #0b,#00,#63,#ff,#f4,#05,#e7,#18
	db #e6,#00,#66,#59,#04,#00,#04,#66
	db #00,#08,#ff,#f4,#05,#e7,#18,#e6
	db #18,#00,#16,#6a,#00,#07,#66,#62
	db #09,#00,#20,#66,#00,#09,#ff,#01
	db #02,#1b,#03,#1c,#e7,#00,#00,#01
	db #e6,#2c,#e8,#17,#00,#e0,#00,#e0
	db #e8,#00,#ea,#0c,#e7,#23,#e9,#1d
	db #e8,#29,#e7,#22,#ea,#0c,#e9,#1d
	db #e8,#28,#e9,#1d,#e8,#00,#ea,#02
	db #e9,#1e,#e9,#1e,#ea,#04,#e9,#1e
	db #e9,#1e,#e9,#1e,#e9,#1e,#e7,#1e
	db #ea,#0a,#eb,#13,#e9,#1d,#eb,#00
	db #e9,#1e,#e7,#22,#ea,#0c,#e9,#1e
	db #e9,#1e,#ea,#0a,#e7,#25,#e9,#24
	db #66,#00,#38,#e7,#22,#ea,#0b,#e9
	db #1d,#e7,#23,#e9,#1d,#21,#e0,#e9
	db #22,#ff,#e7,#12,#00,#02,#e6,#04
	db #00,#e0,#ad,#e6,#2c,#e7,#22,#e9
	db #1d,#e7,#24,#eb,#0c,#ea,#07,#e9
	db #21,#e9,#21,#eb,#00,#ea,#09,#e9
	db #21,#e9,#21,#eb,#0c,#ea,#1c,#e9
	db #25,#e9,#25,#ea,#23,#eb,#00,#e9
	db #25,#e9,#25,#e7,#24,#ea,#0a,#e9
	db #20,#e9,#20,#eb,#0c,#ea,#0c,#e9
	db #20,#e9,#20,#ea,#16,#e7,#25,#e9
	db #24,#6b,#00,#38,#e7,#24,#ea,#06
	db #eb,#00,#e9,#21,#e9,#21,#3d,#f5
	db #ff,#e7,#25,#00,#01,#e6,#00,#ea
	db #24,#e9,#23,#ea,#18,#e9,#23,#e9
	db #23,#e9,#23,#ea,#1a,#e9,#23,#e9
	db #23,#ea,#1c,#e9,#23,#e9,#23,#e9
	db #23,#e9,#23,#e7,#24,#ea,#0a,#eb
	db #00,#e6,#00,#e9,#20,#e9,#20,#e7
	db #25,#ea,#18,#e9,#23,#e9,#23,#ea
	db #16,#e9,#23,#73,#00,#38,#e7,#24
	db #ea,#0d,#eb,#00,#00,#02,#e9,#21
	db #00,#01,#ea,#01,#e9,#21,#3b,#f5
	db #ff,#00,#00,#00,#00,#00,#21,#54
	db #1f,#1c,#1d,#54,#1c,#1c,#1a,#54
	db #1a,#1c,#1f,#2a,#1f,#0e,#1d,#38
	db #ff,#e7,#22,#21,#1c,#e7,#2a,#6b
	db #00,#0e,#e7,#22,#9c,#a1,#a1,#e7
	db #2a,#6b,#00,#07,#e7,#22,#a1,#9c
	db #9c,#1d,#1c,#e7,#2a,#6b,#00,#0e
	db #e7,#22,#98,#9d,#9d,#e7,#2a,#6b
	db #00,#07,#e7,#22,#9d,#98,#98,#1a
	db #1c,#e7,#2a,#6b,#00,#0e,#e7,#22
	db #95,#9a,#9a,#e7,#2a,#6b,#00,#07
	db #e7,#22,#9c,#9d,#9e,#1f,#1c,#e7
	db #2a,#6b,#00,#0e,#e7,#22,#9f,#1d
	db #07,#1d,#15,#e7,#2a,#6b,#00,#07
	db #e7,#22,#9e,#9f,#a0,#ff,#00,#07
	db #fe,#3b,#07,#39,#0e,#00,#07,#39
	db #23,#00,#07,#b9,#bc,#c0,#c3,#c0
	db #be,#3c,#0e,#39,#07,#00,#07,#39
	db #23,#00,#07,#b9,#bc,#c1,#c5,#c1
	db #c0,#be,#3b,#0e,#00,#07,#3b,#23
	db #00,#07,#b5,#b7,#b9,#b5,#b9,#bc
	db #3b,#0e,#b7,#00,#0e,#37,#07,#00
	db #07,#bb,#bc,#be,#68,#00,#07,#68
	db #00,#07,#bb,#bc,#be,#ff,#3c,#07
	db #3e,#15,#3e,#2a,#4a,#07,#c8,#45
	db #0e,#c1,#c3,#c5,#45,#38,#41,#07
	db #3c,#15,#3c,#07,#3e,#15,#3e,#2a
	db #4a,#07,#c8,#45,#0e,#c1,#43,#1c
	db #c5,#41,#07,#3c,#31,#ff,#00,#01
	db #ff,#eb,#04,#69,#30,#38,#69,#b0
	db #eb,#03,#69,#ad,#69,#ad,#eb,#04
	db #69,#a9,#69,#a9,#eb,#03,#69,#af
	db #69,#af,#ff,#34,#62,#32,#0e,#30
	db #54,#2f,#1c,#2d,#38,#37,#1c,#35
	db #0e,#b4,#32,#38,#33,#1c,#39,#07
	db #bb,#b9,#bb,#ff,#21,#54,#1f,#1c
	db #24,#2a,#22,#0e,#21,#1c,#9f,#1d
	db #62,#1f,#07,#a1,#1f,#46,#18,#0e
	db #a4,#28,#5f,#00,#b9,#85,#7f,#8e
	db #f2,#6f,#de,#00,#00

;
.game_name
	db "GI Hero",0
.game_year
	db "1988",0
.game_publisher
	db "Firebird",0
.music_author
	db "Dave Rogers",0
.music_comment
	db "GIHEROSD.ASM G.I.HERO Sound Driver J.Dave Rogers 1988",0

	read "music_end_v1_0.asm"
